The present invention relates to scheduling systems, and more particularly, to techniques for enhancing command scheduling for data storage devices.
Systems such as digital video recorders (DVRs) and set-top boxes are evolving to support advanced features such as high-definition content, multi-stream capability, and mixed workloads. These features combine real-time traffic such as audio-video (AV) traffic and non-real-time traffic. For example, basic DVR functionality may include recording real-time AV streams to a hard disk drive, and later reading AV streams back to a user for viewing. In addition, a DVR may provide non-real-time functions and applications such as an electronic program guides, photo browsing, web browsing, music play list management, etc.
An input/output (IO) scheduler within the operating system layer is typically responsible for deciding when to issue real-time and non-real-time IO commands to the hard disk drive. Processing these real-time and non-real-time functions generates traffic to and from the hard disk drive. IO schedulers typically issue IO commands in the order received from a processor. System performance and quality of service requirements become more challenging as system requirements increase and IO command traffic increases. Delays in performing IO commands can be problematic in real-time applications, where unexpected command latency due to traffic congestion may compromise real-time performance. Therefore, it would be desirable to have an efficient scheduling system.